#include <iostream>

using namespace std;


void ORDENA_ELEMENTOS_DECRECIENTE_VP (float E[][2], float v[], float p[], int n)
{
    for (int i=1 ; i<n; i++)
    {
        for (int j=n-1; j>=i; j--)
        {
            cout << (float)v[j]/p[j]<< "\t" << (float)v[j-1]/p[j-1]<< endl;
            if ((float)v[j]/p[j]>(float)v[j-1]/p[j-1])
            {
                float temp1=v[i];
                v[i]=v[j];
                v[j]=temp1;
                float temp2=p[i];
                p[i]=p[j];
                p[j]=temp2;
                float temp3=E[i][0];
                E[i][0]=E[j][0];
                E[j][0]=temp3;
            }
        }
    }
}



void MOCHILA_C (float E[][2], float v[], float p[], int n, float P)
{
    for(int i=0; i<n; i++)E[i][0]=i;
    for(int i=0; i<n; i++)E[i][1]=0;
    float Pacumulado=0;

    ORDENA_ELEMENTOS_DECRECIENTE_VP (E,v,p,n);

    int i=0;
    while ((i < n) && (Pacumulado < P))
    {
        if(Pacumulado+p[i] <= P)
        {
            Pacumulado += p[i];
            E[i][1]=1;
        }
        else
        {
            E[i][1]=(P - Pacumulado) / p[i];
            Pacumulado=P;
        }
        i=i+1;
    }

}


int main ()
{
    float p[]={6.0,5.0,2.0};
    float v[]={49.0,40.0,20.0};
    float E[3][2];

    for(int i=0; i<3; i++)E[i][0]=i;

    //~ ORDENA_ELEMENTOS_DECRECIENTE_VP (E, v, p, 3);
    MOCHILA_C (E, v, p, 3, 12);
    for(int i=0; i<3; i++)cout << E[i][0] << "\t";
    cout << endl;
    for(int i=0; i<3; i++)cout << E[i][1] << "\t";
    cout << endl;
}
